Skip to content

Conversation

@lotus-nexthop
Copy link
Contributor

@lotus-nexthop lotus-nexthop commented Oct 27, 2025

Why I did it

NH-5010 uses the FPGA as an MDIO controller
We desire to use the PDDF FPGA driver to create the kernel MDIO buses


Example usage: https://github.com/sonic-net/sonic-buildimage/blob/master/device/nexthop/x86_64-nexthop_5010-r0/pddf/pddf-device.json.j2#L2005-L2011

    "pddf_kos": [
      "pddf_multifpgapci_mdio_module",
      "pddf_multifpgapci_driver",
      "pddf_multifpgapci_module",
      ...
    ],
    "custom_kos": [
      "pddf_custom_mdio_algo",
      ...
    ]
  },
  "MULTIFPGAPCIE1": {
    "dev_info": {
      "device_type": "MULTIFPGAPCIE",
      "device_name": "SWITCHCARD_FPGA",
      ...
    },
    ...
    "mdio": {
      "dev_attr": {
        "ch_base_offset": "0x4200",
        "ch_size": "0x10",
        "num_virt_ch": "0x10"
      }
    }
  },

Resulting pddf_parse.py commands run for mdio

echo '0x4200' > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/ch_base_offset
echo '0x10' > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/ch_size
echo '0x10' > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/num_virt_ch
echo 'fpgapci_init' > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/dev_ops
echo 0 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 1 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 2 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 3 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 4 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 5 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 6 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 7 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 8 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 9 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 10 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 11 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 12 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 13 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 14 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus
echo 15 > /sys/kernel/pddf/devices/multifpgapci/0000:03:00.0/mdio/new_mdio_bus

Resulting mdio buses in sysfs

admin@humm120-dut:~$ ls /sys/class/mdio_bus/
0000:07:00.3  pci-mdio-0  pci-mdio-10  pci-mdio-12  pci-mdio-14  pci-mdio-2  pci-mdio-4  pci-mdio-6  pci-mdio-8
fixed-0       pci-mdio-1  pci-mdio-11  pci-mdio-13  pci-mdio-15  pci-mdio-3  pci-mdio-5  pci-mdio-7  pci-mdio-9

Through the mdio_fpga_algo_ops vendors can override the callbacks for the mdio reads and writes without changing the core driver.


In addtion an mdio_acces per an mdio bus sysfs file is exposed for debugging and development purposes.

mdio access API:

  • Doing a write:
    • echo "write <phy_addr> <reg_num> <value>" > mdio_access
  • Doing a read:
    • Set addres to read
      • echo "read <phy_addr> <reg_num>" > mdio_access
    • Read back value from address
      • cat mdio_access

Example

root@sonic:/home/admin# echo "write 0x1f 0x18B20 0x1234" > /sys/class/mdio_bus/pci-mdio-0/mdio_access
root@sonic:/home/admin# echo "read 0x1f 0x18B20" > /sys/class/mdio_bus/pci-mdio-0/mdio_access
root@sonic:/home/admin# cat /sys/class/mdio_bus/pci-mdio-0/mdio_access
0x1234
Work item tracking
  • Microsoft ADO (number only):

How I did it

How to verify it

Which release branch to backport (provide reason below if selected)

  • 202205
  • 202211
  • 202305
  • 202311
  • 202405
  • 202411
  • 202505

Tested branch (Please provide the tested image version)

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@lotus-nexthop lotus-nexthop force-pushed the lotus.mdio-2 branch 2 times, most recently from cb6be8c to f22e365 Compare October 27, 2025 04:29
@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@lotus-nexthop lotus-nexthop reopened this Nov 4, 2025
@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

1 similar comment
@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@Praveen-Brcm Praveen-Brcm merged commit ea9aa4a into sonic-net:master Nov 11, 2025
12 checks passed
pavannaregundi pushed a commit to pavannaregundi/sonic-buildimage that referenced this pull request Nov 22, 2025
* add mdio protocol support

* remove unused variable

* undo unrelated change

---------

Co-authored-by: Roy Wen <[email protected]>
ashutosh-agrawal pushed a commit to AnantKishorSharma/sonic-buildimage that referenced this pull request Nov 30, 2025
* add mdio protocol support

* remove unused variable

* undo unrelated change

---------

Co-authored-by: Roy Wen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants